import axios from "axios";
import router from "@/router/router.js";
import {ElMessage} from "element-plus";
import {userTokenStore} from "@/stores/token.js";

//2.new出来
const baseURL ='http://localhost:8080'
const axiosInstance = axios.create({baseURL});


/**
 * axios 支持请求 拦截器，响应
 * 请求拦截器可以配置config 里面的很多请求配置 包括请求头
 * 响应拦截器可以判断响应的状态结果，返回实际的返回值，判断未认证的情况跳转登录界面
 */

//请求拦截器
axiosInstance.interceptors.request.use((config)=>{
    const userToken = userTokenStore()
    // 判断用户token是否存在 存在给请求头加上认证信息
    let token = userToken.getToken();
    if(token){
        config.headers.token=token
    }

    return config
})

axiosInstance.interceptors.response.use((resp)=>{
    //请求成功 返回实际数据
    if(resp.data.code==0){
        return resp.data
    }
    //失败信息提示
    ElMessage.error(resp.data.message)
    return Promise.reject(resp.data)
},error=>{
    //如果报错401
    if(error.response.status===401){
        ElMessage.error("请登录")
        router.push('/login')
    }else{
        ElMessage("服务异常，请联 系管理员")
    }
    return Promise.reject(error)
})

//导出实例
export default axiosInstance